union mval
{
    int data_switch;
    int data_val_i;
    double data_val_f;
};

struct mdata
{
    int data_key;           // 数据编号
    char data_name[50];     // 数据名称
    int data_type;  // 数据类型
    union mval val;
};

struct STM32
{
    struct mdata data[13];
    struct mdata data[14];
};

struct Modbus
{
    struct mdata data[6];
};

struct CJSON
{
    char version;      // 版本
    char version[50];      // 版本
    int report_type;   // 报告类型
    int report_period; // 报告周期

    char mqtt_server_addr; // mqtt服务器ip
    char mqtt_server_addr[50]; // mqtt服务器ip
    int mqtt_server_port;  // mqtt服务器端口号

    char mb_dev_addr; // modbus端ip
    char mb_dev_addr[50]; // modbus端ip
    int mb_dev_port;  // modbus端口号

    // STM32
    struct STM32 stm32;

    // modbus
    struct Modbus modbus;
};